algebraic manipulations